package com.mmy.dao.permission;

import java.util.Date;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.mmy.domain.permissionmenu.TConstRoleMenu;

public interface TConstRoleMenuRepository extends JpaRepository<TConstRoleMenu, Integer> {



	/**
	 * 函数功能说明： 获取角色编码最大ID
	 *
	 * @param 参数说明
	 * @return 返回值说明 ：Object
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-11-12
	 */
	@Query(value = "SELECT MAX(iID)  FROM tConstRoleMenu", nativeQuery = true)
	Object getMaxID();

//TODO delete
//	/**
//	 * 函数功能说明： 查找所有角色编码
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：integer集合
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-11-12
//	 */
//	@Query(value = "SELECT DISTINCT iRoleID FROM tConstRoleMenu", nativeQuery = true)
//	List<Integer> findRoleID();

//TODO delete
//	/**
//	 * 函数功能说明：查找所有菜单编码
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：integer集合
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-11-12
//	 */
//	@Query(value = "SELECT DISTINCT iMenuID FROM tConstRoleMenu", nativeQuery = true)
//	List<Integer> findMenuID();

//TODO delete
//	/**
//	 * 函数功能说明： 删除角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：无返回值
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-11-12
//	 */
//	@Transactional
//	@Modifying
//	@Query(value = "delete from tConstRoleMenu where iRoleID in (:lstRoleID)", nativeQuery = true)
//	void delRoleMenu(@Param("lstRoleID") List<Integer> lstRoleID);

//TODO delete
//	/**
//	 * 函数功能说明： 通过角色编码查找角色菜单
//	 *
//	 * @param 参数说明
//	 * @return 返回值说明 ：角色菜单集合
//	 * @throws 异常处理说明
//	 * @author 创建人 shangzl
//	 * @date 创建日期 2020-11-12
//	 */
//	@Query(value = "select * from tConstRoleMenu where iRoleID = :iRoleID", nativeQuery = true)
//	List<TConstRoleMenu> findByRoleID(@Param("iRoleID") int iRoleID);

	/**
	 * 函数功能说明： 通过角色编码删除角色菜单
	 * 
	 * @param 参数说明
	 * @return 返回值说明 ：无返回值
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-11-12
	 */
	@Transactional
	@Modifying
	@Query(value = "delete from tConstRoleMenu where iRoleID = :iRoleID", nativeQuery = true)
	void delRoleMenuByRoleID(@Param("iRoleID") int iRoleID);

	/**
	 * 函数功能说明： 新增角色菜单ID
	 * 
	 * @param 参数说明
	 * @return 返回值说明 ：无返回值
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-11-12
	 */
	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tConstRoleMenu(iID, iRoleID, iMenuID, dCreateDate, cCreator, dModifyDate, cReviser, cMemo, cSpare1, cSpare2, cSpare3, cSpare4, cSpare5) VALUES (:id, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)", nativeQuery = true)
	void save(@Param("id") int id);

	/**
	 * 函数功能说明： 新增角色菜单
	 * 
	 * @param 参数说明
	 * @return 返回值说明 ：无返回值
	 * @throws 异常处理说明
	 * @author 创建人 shangzl
	 * @date 创建日期 2020-11-12
	 */
	@Transactional
	@Modifying
	@Query(value = "INSERT INTO tConstRoleMenu(iID, iRoleID, iMenuID, dCreateDate, cCreator) VALUES (:iID,:iRoleID,:iMenuID, :dCreateDate, :cCreator)", nativeQuery = true)
	void save(@Param("iID") int iID, @Param("iRoleID") int iRoleID, @Param("iMenuID") int iMenuID,
			@Param("dCreateDate") Date dCreateDate, @Param("cCreator") String cCreator);


}
